API 21引入了Camera2,deprecated掉了Camera,确立Image作为相机得到的原始帧数据的载体;硬件编解码的MediaCodec类加入了对Image和Image的封装ImageReader U/V的平(Planar)面和半平面(Semi-Planar) U/V的Planar存储(YUV420P) 我测试不同安卓设备,找到存储格式是Planar的设备: Log.i
不过呢,音视频中,流媒体协议rtsp也占有很大份额!日常生活呢,我们也会遇到一些不同流媒体协议转换的问题!本篇记录实现一个rtsp转rtmp直播流的程序!闲言少叙,接下来置入主题。 需求 有一个摄像头,比如海康的监控摄像头,可以通过rtsp流的方式访问其视频画面!需要将其画面转换为rtmp协议,并实现直播! 实现思路 我们的程序,称之为rtsp2rtmp,使用该程序实现拉取摄像头rtsp视频流,并将rtmp视频流转换为rtmp视频流,然后推送到直播服务器,直播服务器采用nginx+rtmp_module的方式实现 rtsp2rtmp,使用FFmpeg API来实现! << std::endl; // 2.获得流信息 m_nRet = avformat_find_stream_info(m_pRtspAVFormatContext, 0); if (m_nRet
下载 npm install node-rtsp-stream(插件) 前端 下载 jsmpeg.js框架。引入对应开发页面。(详细请参考 jsmpeg.js 文档) html js 部分
标题:使用Java编写FFmpeg实现RTSP拉流推流RTMP详解 引言: RTSP(Real Time Streaming Protocol)是一种用于实时媒体传输的网络协议,而RTMP(Real Time 本篇博客将介绍如何使用Java编写FFmpeg来实现RTSP流的拉取和RTMP流的推送。 以下是一个简单的示例代码,展示了如何使用FFmpeg拉取RTSP流并推送到RTMP流。 ffmpeg多个视频流推流推向一个rtsp地址 FFmpeg可以将多个视频流推向一个RTSP地址。 推送多个视频流到同一个RTSP地址时,要确保视频流的格式、分辨率和编码等参数是兼容的,以避免兼容性问题。 结论: 通过使用FFmpeg和Java,我们可以方便地实现RTSP流的拉取和RTMP流的推送。
EasyScreenLive是一款简单、高效、稳定的集采集,编码,组播,推流和流媒体RTSP服务于一身的同屏功能组件,在大屏显示投屏,无纸化会议同屏演示,课堂同屏等,可以配合全屏显示,在很多项目中都能够实现项目推流的需求 上一篇文中我们讲了EasyScreenLive推RTSP流到EasyDarwin(EasyScreenLive推流组件推RTSP流到EasyDarwin),本文以EasyDSS为主,带着大家演示一遍看下推 ,Port为推流端口,在线演示的端口被定义为10035,Stream为推流标识,如上图,我们自定义推流标识为hls/Seven,填写完毕信息后,我们点击StartPushRTMP按钮,日志栏提示推流成功 打开WEB页面,在直播管理页面->视频直播列表显示中,可以看到刚刚我们推上来的流信息,有ID、名称、推流开关、推流鉴权、推流计划、录像计划、状态、分享开关、直播状态、推送流量等信息显示,方面直观,除了页面可以直播播放以外 ,EasyDSS还支持分发其它协议流供不同终端来做播放使用,选择编辑按钮,可以看到完整的推流地址和不同协议的播放地址,如下图:
1、需求背景目前不是所有的直播推流设备都支持GB28181的国标注册,有的只能输出直播流,有的只能支持RTSP的推流。 那么,项目中如何把 rtsp推流或直播流转成GB/T281812、开启RTSP2.1、基础配置配置RTSP端口3、获取RTSP推流地址3.1、RTSP推流地址格式示例:rtsp://192.168.2.135 :1554/stream_1192.168.2.135 是部署LiveNVR服务器的IP,您自己用的时候换成自己服务器的IP1554 是基础配置配置的RTSP服务端口stream_1 固定格式的推流ID (stream_通道号),比如通道 6 的推流ID就是 stream_63.3、RTSP推流地址示例通道1:rtsp://192.168.2.135:1554/stream_1通道3:rtsp://192.168.2.135 :1554/stream_3通道6:rtsp://192.168.2.135:1554/stream_64、配置设备推流将上面生成的rtsp推流地址,配置到无人机 或是 推流的设备上面5、配置拉转RTSPLiveNVR
EasyScreenLive可以说是TSINGSEE青犀视频的SDK中功能较为集中且全面的一个SDK了,它可以支持推RTSP流到EasyDarwin、推RTMP流到EasyDSS等视频平台,下面我们带着大家演示一遍看下推 1、推RTSP流至EasyDarwin DEMO示例中选择屏幕采集,然后Capture,接着添加EasyDarwin的信息,RTSPush IP为部署EasyDarwin服务的IP地址,本案例中,直接用的本机 127.0.0.1的地址,Port为推流端口,安防领域关于RTSP的端口大家一般都用554端口,EasyDarwin也延续这个默认的规则,Stream为推流标识,如上图,我们自定义推流标识为Seven, 填写完毕信息后,我们点击StartPushRTSP按钮,日志栏提示推流成功,下面我们看下EasyDarwin的状态展示。 2、EasyDarwin的状态展示 EasyDarwin默认的WEB端口为10008端口,我们打开http://127.0.0.1:10008/ 可以直接进入WEB页面,在推流列表中,我们可以看到刚才推送的流信息
用户反馈说华为手机(安卓)小程序推流时声音持续卡顿,始终不会恢复且稳定复现,但是 iOS 小程序推流时声音却是正常的。二、疑惑经过一系列常规处理后,问题依然存在。 后来进一步验证发现,不仅是华为手机,所有的安卓手机小程序推流声音都有问题。按照一般的思路,既然 iOS 设备的小程序没有问题,理论上安卓设备的小程序也不应该有问题,那么很可能是后续链路出现了问题。 反观安卓设备小程序推流的情况,concealedSample/s 数据始终在 2.5k/s 左右,影响了声音的正常播放。 解惑3针对疑惑3,综合研发同学和 QA 同学的反馈,去年年底的时候,安卓小程序推流音频还是正常的,而且之后流媒体服务器和客户端都没有进行过相关功能的升级。 方案1既然是安卓小程序推的音频流有问题,首先想到的就是在源头上解决问题,但是了解小程序直播业务开发的小伙伴一定都知道小程序的底层 SDK 是腾讯提供的,特别是音视频能力,很多接口都没有暴露出来。
channel=1&subtype=0 举例取1通道主码流rtsp://admin:123456@192.168.1.100:554/cam/realmonitor? channel=1&subtype=0 海康威视 rtsp://用户名:密码@IP地址:端口/Streaming/Channels/id 101:1通道主码流 102:1通道子码流 201:2通道主码流 举例取1通道主码流rtsp://admin:123456@192.168.1.100:554/Streaming/Channels/101 宇视 rtsp://用户名:密码@ip地址:端口/video1 /2/3 举例取主码流rtsp://admin:123456@192.168.1.100:554/video1 TP-LINK rtsp://用户名:密码@ip地址:端口/stream1 举例rtsp: 中维 rtsp://ip地址:端口/live0或1.264 举例rtsp://192.168.1.100:554/1ive0.264 天地伟业 rtsp://ip地址:端口 举例rtsp://192.168.1.100
在移动端音视频领域,单纯的 RTMP 推流已不再是技术天花板。 ,打造一套集采集、编码、推流、服务、存储于一体的高可靠、低延迟音视频解决方案。 传统的推流端通常只负责推流,拉流需要依赖 Nginx 或 SRS 等服务器。但该 SDK 允许 Android 设备变身为 RTSP 服务器。 教学/会议:讲师端作为 RTSP Server,学生端直接拉流。 从“推流端”到“边缘计算节点”的角色蜕变 最令人印象深刻的,是 SDK 内置的 轻量级 RTSP 服务。
好多开发者一直搞不清我们轻量级RTSP服务SDK和RTSP推流SDK的区别,以下是相关区别: daniulive_chart_20200130.png 1. 设置rtsp的流名称给要发布的rtsp流设置rtsp serverAddRtspStreamServer给要发布的rtsp流设置rtsp server, 一个流可以发布到多个rtsp server上,rtsp rtsp流StartRtspStream启动rtsp流停止rtsp流StopRtspStream停止rtsp流 2. RTSP推流模块:RTSP推流模块,和RTMP推流模块类似,适用于内网或公网环境下,主要适用于第三方RTSP服务对接,如darwin stream server,或者第三方RTSP服务平台,如视频分析平台等特定场景的服务器 推流的场景,一般建议走RTMP,需要特定系统对接的,再走RTSP。
基于live555的视频直播 DM368IPNC RTSP分析 本文是 我对TI DM368IPNC RTSP直播部分的代码分析。 appro IPNC视频流直播部分用的RTSP,基于live555,通过改写wis-streamer实现的,在live555官网上有wis-streamer的代码下载,appro将其修改,在framedsource 感慨:C++ 真的太好用了 现在懒了,文字部分就直接复制出来,源文档使用的是excel, 基于live555的视频直播 DM368IPNC RTSP分析 一、描述 appro利用live555实现了三种视频流以及一种音频流的直播 提供的实现直播的通用步骤是: 截图来自之前的《live555分析与开发.xlsx》 appro也是按照此种方法实现 二、Appro的添加的live555源文件 之所以文件复杂,是由于实现了多种音视频流, 部分可不做任何改动 四、RTSP直播 main主程序 这与普通的live555 rtsp service结构并无太多区别,只是由于要传输的视频类型较多,所以多了很多if else,这部分比较简单,
封装 Camera2 API、AudioRecord 以及 Native 推流库。 管理数据采集(YUV/PCM)到编码推流的全流程。 UI 层 (MainActivity): 纯展示与控制。 数据采集与 Native 推流这是整个系统的数据引擎。 这是性能最敏感的部分,直接决定了推流的延迟和流畅度。 五、 核心实现四:RTSP Server 与多路分发系统不仅支持 RTMP 推流,还内置了一个轻量级的 RTSP Server。这意味着手机本身变成了一个 IPC(网络摄像机)。 灵活性:Service 承载业务,Activity 仅作展示,实现了完美的解耦,支持断线重连和后台静默推流。 功能全:同时支持 RTMP 推流、RTSP 服务端、水印叠加、软硬编码自动切换。
技术背景我们在对接外部开发者的时候,遇到这样的技术诉求,客户用于地下管道检测场景,需要把摄像头的数据拉取过来,然后叠加上实时位置、施工单位、施工人员等信息,然后对外输出新的RTSP流,并本地录制一份带动态水印叠加后的数据 技术实现废话不多说,下图先通过Android平台拉取RTSP流,然后把解码后的yuv或rgb数据回上来,以图层的形式投递到推送端,需要加水印的话,添加文字水印或图片水印(系动态水印)图层,底层做动态叠加后二次编码打包 ,通过启动轻量级RTSP服务,发布RTSP流,生成二次处理后的RTSP新的拉流url,如果需要推送至RTMP,只要调用推送RTMP的接口即可,本地录制,可以设置录制目录等信息,保存二次编码后的MP4文件到本地 }发布RTSP流://发布/停止RTSP流class ButtonRtspPublisherListener implements View.OnClickListener {public void onClick stream_publisher_.StartRtspStream()) {stream_publisher_.try_release();Log.e(TAG, "调用发布rtsp流接口失败!")
JBPM工作流框架应用 导入jar包 jbpm案例中获取配置文件,并配置本地数据库 创建流程,并进行相关修改 流程及流程内任务等的草操作 import java.io.File; helloworld2.png");//读取图片文件 String id = deployment.deploy();//完成部署 System.out.println(id); // 方式二----读取压缩文件流 InputStream in = processEngine.getRepositoryService().getResourceAsStream(deploymentId, resourceName); //通过输出流将文件保存到本地磁盘
EasyPusher是一款国产的RTSP直播录制推流客户端工具,它支持Windows、Linux、Android、iOS等操作系统。 EasyPusher采用RTSP推流协议,其中安卓版EasyPusher的Github托管地址为https://github.com/EasyDarwin/EasyPusher-Android。 不过EasyPusher有好几年没更新了,尤其安卓版的EasyPusher仍在调用过时的support支持库,而非推出多年的AndroidX库。 点击App界面右下角的设置按钮,打开设置页面如下图所示,注意修改上方编辑框中的服务端推流地址,比如rtsp://124.70.***.***/live/test。 注意,由于EasyPusher仅支持RTSP推流,不支持RTMP等其他推流协议,因此上面只能填写RTSP推流链接。
最近很多用户在使用我们经典流媒体EasyNVR的时候提出一个需求:是否可以精简其中的功能模块,只做一个拉转推的功能,不需要流媒体的功能,类似于做一个视频网关的软件产品。答案当然是可以的。 TSINGSEE青犀视频现有的平台中已经有两款产品支持这样的功能,一款是EasyRTSPLive,另一款是EasyRTMPLive,他们的特色功能就是拉转推视频网关的功能。 image.png 拿EasyRTSPLive来说,当前我们编译出来的DEMO,供大家测试使用的是拉一路推一路的工具版,基于这个需求,不少网友找过来问能否有一个多通道的工具版,这个也是可以的,只需要修改代码就能完成 EasyRTSPLive 上克隆代码到本地; 2、用VS2010打开工程文件,如下图: image.png 3、找到通道限定的位置代码,在main.cpp 定义的全局变量中,如下: //用户可自定义的RTSP 转RTMP拉流转推流路数,官方工具版默认1路拉转推,用户可通过代码定制多路RTSP转RTMP #define MAX_CHANNEL_INDEX 1 4、修改为自己所需要的通道数量,如#define
主要原因在于rtsp协议的视频流(默认是需要插件才可以播放的)经由EasyNVR处理后可以满足无插件的全平台直播。 处理后会获取到RTMP、HLS视频流,这就解决了插件直播的问题,只要终端设备支持H5,就可以播放EasyNVR分发出的视频流。 ? EasyNVR如何实现视频转推其他直播间 解答问题 1.获取到直播间的推流地址: ? 2.将对应的推流地址添加到需要推流的通道的CDN配置选项中 ? 3.成功将视频流推流到对应的rtmp流媒体直播间,并且有直播间进行视频流分发。 ? ? 该功能可以动态运用,将EasyNVR接入的视频进行转推到需要直播的流媒体服务器进行直播分发。
区别于传统“播放器或推流器”的单点工具,SmartMediaKit 更像是一套“积木式音视频内核”,用户可按需加载所需模块,构建灵活可控的视频通信链路,广泛应用于安防监控、工业采集、远程协作、智能终端等多种高实时性场景 下列为基于实际项目场景整理的典型链路组合,便于开发者按需参考部署: 场景一:RTSP 监控画面低延迟播放(安卓 / Windows)适用场景:工业视频监控、智能机器人远程操控、安防可视化管理等 链路组合 :RTSP 视频源 → [RTSP 播放器 SDK] → 安卓 / Windows 播放界面推荐模块配置: 播放端使用 RTSP Player SDK(开启低延迟模式 + 硬解支持) 开启 YUV/RGB 推荐组合: RTSP 播放模块(解码 RTSP 视频流) RTSP → RTMP 转发模块(编码并转推) 本地录像模块(边转边录) 部署环境:Linux/Android 边缘设备,arm64 架构 推荐组合: 推送端:RTMP 推送模块 + SEI 扩展数据注入 地面接收端:RTMP 播放模块 + 播放端录像模块 分发中继端:RTMP 录制 + 前端播放 部署环境:无人机安卓终端 + 控制中心
写这篇博客主要是为了给新入门的流媒体开发者解惑,现在看到各种开发者的需求:网页播放RTSP摄像机、微信播放RTSP摄像机、网页播放摄像机SDK输出的视频流、网页播放第三方流媒体平台输出的视频流、包括Github /visual-opening/skeyewebplayer将整个过程进行拆分为二:一、通过RTSP或者SDK获取H.264视频流和AAC音频流,获取RTSP流我们可以用ffmpeg、SkeyeRTSPClient 、librtmp、SkeyeRTMPPusher等多种方案推流,如果采用ffmpeg为工具进行RTSP拉流的话,我们建议推流也用ffmpeg,这样直接将音频数据在ffmpeg内部进行一次filter转码 ):SkeyeRTMP_File:读取MP4文件推RTMP直播流,实现虚拟直播;SkeyeRTMP_RTSP:读取RTSP流并进行转换成RTMP推流到RTMP服务器;SkeyeRTMP_SDK:调用SDK 获取音视频流,再推流RTMP;SkeyeRTMP Android:安卓推送摄像头/屏幕进行RTMP直播;SkeyeRTMP iOS:iOS苹果推送摄像头进行RTMP直播;完备的调用示例,加上全平台的支持